Skill

টেস্টএনজি (TestNG)

511

টেস্টএনজি (ইংরেজি: TestNG) হলো একটি ওপেন সোর্স পরীক্ষণ ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষার জন্য তৈরি করা হয়েছে। এটি বিশেষ করে ইউনিট টেস্টিং, ইন্টিগ্রেশন টেস্টিং, এবং সিস্টেম টেস্টিং করার জন্য ডিজাইন করা হয়েছে। TestNG এর নাম "Test Next Generation" থেকে এসেছে এবং এটি JUnit-এর উন্নত সংস্করণ হিসেবে বিবেচিত হয়। এটি ফিচারসমূহ এবং কার্যকারিতায় অনেক উন্নত এবং উন্নত পরীক্ষণ কাঠামো সরবরাহ করে।


TestNG: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

TestNG হলো একটি টেস্টিং ফ্রেমওয়ার্ক, যা বিশেষভাবে জাভা প্রোগ্রামিং ভাষা ব্যবহার করে ইউনিট টেস্টিং, ইন্টিগ্রেশন টেস্টিং, এবং ফাংশনাল টেস্টিং করার জন্য ব্যবহৃত হয়। এটি JUnit এবং NUnit এর অনুরূপ, তবে TestNG আরও বেশি ফিচার এবং সুবিধা প্রদান করে, যা বিশেষ করে এন্টারপ্রাইজ-লেভেলের টেস্টিং এবং অটোমেশন টেস্টিং করার জন্য উপযোগী।

TestNG-এর NG মানে "Next Generation," যা ইঙ্গিত দেয় যে এটি JUnit এর উন্নত সংস্করণ হিসেবে কাজ করে এবং আরও শক্তিশালী ফিচার নিয়ে আসে। এটি টেস্ট কেস তৈরি এবং পরিচালনার জন্য অত্যন্ত কার্যকর, বিশেষ করে জাভা ভিত্তিক প্রজেক্টে।

TestNG এর বৈশিষ্ট্য

  1. সহজ টেস্ট কনফিগারেশন: TestNG এর মাধ্যমে টেস্ট মেথডগুলোকে সহজেই কনফিগার করা যায়।
  2. অনোটেশন-ভিত্তিক: TestNG এর সমস্ত টেস্ট মেথড অনোটেশন (Annotation) দ্বারা পরিচালিত হয়, যা কোডকে আরও পরিষ্কার করে।
  3. প্যারামিটারাইজড টেস্ট: TestNG প্যারামিটারাইজড টেস্টিং সমর্থন করে, যেখানে একাধিক ইনপুট দিয়ে এক টেস্ট কেস চালানো যায়।
  4. ডিপেন্ডেন্ট টেস্টিং: এক টেস্ট কেস অন্য টেস্টের উপর নির্ভর করতে পারে, যা TestNG-তে সহজেই সেটআপ করা যায়।
  5. বৈশিষ্ট্য-ভিত্তিক টেস্টিং: TestNG এর মাধ্যমে টেস্ট কেসগুলোকে গ্রুপ করে বা বৈশিষ্ট্য অনুযায়ী পরিচালনা করা যায়।
  6. পারালাল টেস্টিং: TestNG একইসাথে একাধিক টেস্ট একযোগে চালাতে সক্ষম, যা বড় প্রজেক্টে অটোমেশন টেস্টিংকে আরও দ্রুত করে।
  7. HTML রিপোর্টিং: TestNG টেস্ট রান করার পরে স্বয়ংক্রিয়ভাবে HTML রিপোর্ট তৈরি করে।
  8. সোফিস্টিকেটেড লিস্টেনার API: TestNG বিভিন্ন ইভেন্টের উপর ভিত্তি করে কাজ করার জন্য শক্তিশালী লিস্টেনার API প্রদান করে।

TestNG এর কাজের ধাপ

ধাপ ১: TestNG ইনস্টল করা

TestNG ব্যবহারের জন্য আপনাকে প্রথমে Eclipse IDE বা IntelliJ IDEA-তে TestNG ইনস্টল করতে হবে অথবা Maven দিয়ে ইনস্টল করতে পারেন।

Eclipse এ TestNG ইনস্টল করা:

  1. Eclipse খুলুন।
  2. Help মেনুতে যান এবং Eclipse Marketplace সিলেক্ট করুন।
  3. TestNG লিখে সার্চ করুন এবং TestNG for Eclipse ইনস্টল করুন।

Maven দিয়ে ইনস্টল করা:

যদি আপনি Maven প্রজেক্ট ব্যবহার করেন, তাহলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.4.0</version>
    <scope>test</scope>
</dependency>

ধাপ ২: TestNG টেস্ট কেস তৈরি করা

TestNG ব্যবহার করে টেস্ট কেস তৈরি করা অত্যন্ত সহজ। TestNG টেস্ট মেথডগুলো @Test অনোটেশন ব্যবহার করে চিহ্নিত করা হয়। নিচে একটি সাধারণ টেস্ট কেস উদাহরণ দেওয়া হলো:

import org.testng.annotations.Test;

public class ExampleTest {

    @Test
    public void testMethod() {
        System.out.println("This is a test method.");
    }
}

উপরের উদাহরণে:

  • @Test অনোটেশন ব্যবহার করে testMethod() মেথডটি একটি টেস্ট মেথড হিসেবে চিহ্নিত করা হয়েছে।
  • এই মেথডটি চালানোর সময় "This is a test method." আউটপুট দেখাবে।

ধাপ ৩: টেস্ট কেস চালানো

TestNG এর মাধ্যমে টেস্ট কেস চালানো অত্যন্ত সহজ। Eclipse IDE তে TestNG টেস্ট কেস চালানোর জন্য:

  1. TestNG ক্লাসে ডান-ক্লিক করুন।
  2. Run As -> TestNG Test সিলেক্ট করুন।

আপনার টেস্ট কেস সফলভাবে রান হলে কনসোলে আউটপুট দেখতে পাবেন।

ধাপ ৪: প্যারামিটারাইজড টেস্ট

TestNG-তে প্যারামিটারাইজড টেস্ট কনফিগার করা সম্ভব, যা একাধিক ইনপুট দিয়ে একই টেস্ট চালাতে সাহায্য করে। নিচে একটি উদাহরণ দেওয়া হলো:

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class ParameterizedTest {

    @Test
    @Parameters({"param1", "param2"})
    public void testMethod(String param1, String param2) {
        System.out.println("Parameter 1: " + param1);
        System.out.println("Parameter 2: " + param2);
    }
}

testng.xml ফাইলে প্যারামিটার কনফিগার করা যাবে:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <test name="Test">
        <parameter name="param1" value="Value1"/>
        <parameter name="param2" value="Value2"/>
        <classes>
            <class name="ParameterizedTest"/>
        </classes>
    </test>
</suite>

ধাপ ৫: টেস্ট ডিপেন্ডেন্সি

TestNG এর মাধ্যমে টেস্ট মেথডগুলোর মধ্যে ডিপেন্ডেন্সি সেট করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:

import org.testng.annotations.Test;

public class DependencyTest {

    @Test
    public void startServer() {
        System.out.println("Server started.");
    }

    @Test(dependsOnMethods = {"startServer"})
    public void testApplication() {
        System.out.println("Application testing.");
    }
}

উপরের উদাহরণে, testApplication() মেথডটি startServer() মেথডের উপর নির্ভর করে, অর্থাৎ startServer() সফল হলে তবেই testApplication() চালানো হবে।

ধাপ ৬: টেস্ট গ্রুপিং

TestNG-তে টেস্টগুলোকে বিভিন্ন গ্রুপে ভাগ করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:

import org.testng.annotations.Test;

public class GroupingTest {

    @Test(groups = {"sanity"})
    public void sanityTest() {
        System.out.println("Sanity test.");
    }

    @Test(groups = {"regression"})
    public void regressionTest() {
        System.out.println("Regression test.");
    }
}

ধাপ ৭: HTML রিপোর্টিং

TestNG টেস্ট চালানোর পরে স্বয়ংক্রিয়ভাবে একটি HTML রিপোর্ট তৈরি করে, যেখানে সমস্ত টেস্টের ফলাফল দেখা যায়। Eclipse বা IntelliJ IDEA তে test-output ফোল্ডারে রিপোর্টটি পাওয়া যাবে।

TestNG এর সুবিধা

  1. অনোটেশন-ভিত্তিক টেস্টিং: TestNG এর অনোটেশন ব্যবহার করে টেস্টিং আরও সহজ হয়।
  2. ডিপেন্ডেন্ট টেস্টিং: এক টেস্ট কেস অন্য টেস্ট কেসের উপর নির্ভর করতে পারে।
  3. প্যারামিটারাইজড টেস্টিং: TestNG প্যারামিটারাইজড টেস্টিং সমর্থন করে, যা একাধিক ইনপুট দিয়ে একই টেস্ট চালাতে সাহায্য করে।
  4. পারালাল টেস্টিং: TestNG একই সময়ে একাধিক টেস্ট চালাতে সক্ষম, যা বড় প্রজেক্টে বিশেষ উপযোগী।
  5. রিপোর্টিং: TestNG টেস্ট চালানোর পরে স্বয়ংক্রিয়ভাবে HTML এবং XML রিপোর্ট তৈরি করে।

TestNG এর অসুবিধা

  1. শেখার সময়: JUnit এর তুলনায় TestNG এর কিছু ফিচার শিখতে সময় লাগতে পারে।
  2. মোডিউল সমর্থন: TestNG এর কিছু পুরোনো ভার্সনে জাভার নতুন মডিউল সিস্টেমের সমর্থন কম।

TestNG বনাম JUnit

বিষয়TestNGJUnit
অনোটেশনবেশি এবং উন্নতসীমিত
প্যারামিটারাইজড টেস্টিংসমর্থিতসমর্থিত নয়
ডিপেন্ডেন্ট টেস্টিংসমর্থিতসমর্থিত নয়
রিপোর্টিংস্বয়ংক্রিয় HTML রিপোর্টসীমিত
পারালাল টেস্টিংসমর্থিতসমর্থিত নয়

TestNG শেখার জন্য রিসোর্স

  1. TestNG অফিসিয়াল ডকুমেন্টেশন: https://testng.org
  2. YouTube টিউটোরিয়াল: YouTube এ "TestNG Tutorial" নামে অনেক ভিডিও টিউটোরিয়াল পাওয়া যায়।
  3. Udemy এবং Coursera: TestNG সম্পর্কিত বিভিন্ন কোর্স উপলব্ধ রয়েছে।

কিওয়ার্ড

  • TestNG: একটি জাভা ভিত্তিক টেস্টিং ফ্রেমওয়ার্ক, যা অটোমেশন এবং ইউনিট টেস্টিংয়ের জন্য ব্যবহৃত হয়।
  • Annotation-based Testing: TestNG এর টেস্ট মেথডগুলো অনোটেশন দ্বারা চিহ্নিত করা হয়।
  • Parameterized Testing: একই টেস্ট মেথডে বিভিন্ন ইনপুট প্যারামিটার দিয়ে টেস্ট চালানোর পদ্ধতি।
  • Parallel Testing: TestNG এর মাধ্যমে একাধিক টেস্ট একই সাথে চালানো যায়।

উপসংহার

TestNG হলো একটি শক্তিশালী এবং অত্যন্ত কার্যকর জাভা ভিত্তিক টেস্টিং ফ্রেমওয়ার্ক, যা বড় প্রজেক্টের জন্য বিশেষ উপযোগী। এর প্যারামিটারাইজড টেস্টিং, ডিপেন্ডেন্ট টেস্টিং, এবং পারালাল টেস্টিং ফিচারগুলো TestNG-কে অত্যন্ত জনপ্রিয় করে তুলেছে। যারা জাভাতে কাজ করেন এবং তাদের প্রজেক্টে ইউনিট টেস্টিং এবং অটোমেশন টেস্টিং করতে চান, তাদের জন্য TestNG একটি চমৎকার সমাধান।

টেস্টএনজি (ইংরেজি: TestNG) হলো একটি ওপেন সোর্স পরীক্ষণ ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষার জন্য তৈরি করা হয়েছে। এটি বিশেষ করে ইউনিট টেস্টিং, ইন্টিগ্রেশন টেস্টিং, এবং সিস্টেম টেস্টিং করার জন্য ডিজাইন করা হয়েছে। TestNG এর নাম "Test Next Generation" থেকে এসেছে এবং এটি JUnit-এর উন্নত সংস্করণ হিসেবে বিবেচিত হয়। এটি ফিচারসমূহ এবং কার্যকারিতায় অনেক উন্নত এবং উন্নত পরীক্ষণ কাঠামো সরবরাহ করে।


TestNG: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

TestNG হলো একটি টেস্টিং ফ্রেমওয়ার্ক, যা বিশেষভাবে জাভা প্রোগ্রামিং ভাষা ব্যবহার করে ইউনিট টেস্টিং, ইন্টিগ্রেশন টেস্টিং, এবং ফাংশনাল টেস্টিং করার জন্য ব্যবহৃত হয়। এটি JUnit এবং NUnit এর অনুরূপ, তবে TestNG আরও বেশি ফিচার এবং সুবিধা প্রদান করে, যা বিশেষ করে এন্টারপ্রাইজ-লেভেলের টেস্টিং এবং অটোমেশন টেস্টিং করার জন্য উপযোগী।

TestNG-এর NG মানে "Next Generation," যা ইঙ্গিত দেয় যে এটি JUnit এর উন্নত সংস্করণ হিসেবে কাজ করে এবং আরও শক্তিশালী ফিচার নিয়ে আসে। এটি টেস্ট কেস তৈরি এবং পরিচালনার জন্য অত্যন্ত কার্যকর, বিশেষ করে জাভা ভিত্তিক প্রজেক্টে।

TestNG এর বৈশিষ্ট্য

  1. সহজ টেস্ট কনফিগারেশন: TestNG এর মাধ্যমে টেস্ট মেথডগুলোকে সহজেই কনফিগার করা যায়।
  2. অনোটেশন-ভিত্তিক: TestNG এর সমস্ত টেস্ট মেথড অনোটেশন (Annotation) দ্বারা পরিচালিত হয়, যা কোডকে আরও পরিষ্কার করে।
  3. প্যারামিটারাইজড টেস্ট: TestNG প্যারামিটারাইজড টেস্টিং সমর্থন করে, যেখানে একাধিক ইনপুট দিয়ে এক টেস্ট কেস চালানো যায়।
  4. ডিপেন্ডেন্ট টেস্টিং: এক টেস্ট কেস অন্য টেস্টের উপর নির্ভর করতে পারে, যা TestNG-তে সহজেই সেটআপ করা যায়।
  5. বৈশিষ্ট্য-ভিত্তিক টেস্টিং: TestNG এর মাধ্যমে টেস্ট কেসগুলোকে গ্রুপ করে বা বৈশিষ্ট্য অনুযায়ী পরিচালনা করা যায়।
  6. পারালাল টেস্টিং: TestNG একইসাথে একাধিক টেস্ট একযোগে চালাতে সক্ষম, যা বড় প্রজেক্টে অটোমেশন টেস্টিংকে আরও দ্রুত করে।
  7. HTML রিপোর্টিং: TestNG টেস্ট রান করার পরে স্বয়ংক্রিয়ভাবে HTML রিপোর্ট তৈরি করে।
  8. সোফিস্টিকেটেড লিস্টেনার API: TestNG বিভিন্ন ইভেন্টের উপর ভিত্তি করে কাজ করার জন্য শক্তিশালী লিস্টেনার API প্রদান করে।

TestNG এর কাজের ধাপ

ধাপ ১: TestNG ইনস্টল করা

TestNG ব্যবহারের জন্য আপনাকে প্রথমে Eclipse IDE বা IntelliJ IDEA-তে TestNG ইনস্টল করতে হবে অথবা Maven দিয়ে ইনস্টল করতে পারেন।

Eclipse এ TestNG ইনস্টল করা:

  1. Eclipse খুলুন।
  2. Help মেনুতে যান এবং Eclipse Marketplace সিলেক্ট করুন।
  3. TestNG লিখে সার্চ করুন এবং TestNG for Eclipse ইনস্টল করুন।

Maven দিয়ে ইনস্টল করা:

যদি আপনি Maven প্রজেক্ট ব্যবহার করেন, তাহলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.4.0</version>
    <scope>test</scope>
</dependency>

ধাপ ২: TestNG টেস্ট কেস তৈরি করা

TestNG ব্যবহার করে টেস্ট কেস তৈরি করা অত্যন্ত সহজ। TestNG টেস্ট মেথডগুলো @Test অনোটেশন ব্যবহার করে চিহ্নিত করা হয়। নিচে একটি সাধারণ টেস্ট কেস উদাহরণ দেওয়া হলো:

import org.testng.annotations.Test;

public class ExampleTest {

    @Test
    public void testMethod() {
        System.out.println("This is a test method.");
    }
}

উপরের উদাহরণে:

  • @Test অনোটেশন ব্যবহার করে testMethod() মেথডটি একটি টেস্ট মেথড হিসেবে চিহ্নিত করা হয়েছে।
  • এই মেথডটি চালানোর সময় "This is a test method." আউটপুট দেখাবে।

ধাপ ৩: টেস্ট কেস চালানো

TestNG এর মাধ্যমে টেস্ট কেস চালানো অত্যন্ত সহজ। Eclipse IDE তে TestNG টেস্ট কেস চালানোর জন্য:

  1. TestNG ক্লাসে ডান-ক্লিক করুন।
  2. Run As -> TestNG Test সিলেক্ট করুন।

আপনার টেস্ট কেস সফলভাবে রান হলে কনসোলে আউটপুট দেখতে পাবেন।

ধাপ ৪: প্যারামিটারাইজড টেস্ট

TestNG-তে প্যারামিটারাইজড টেস্ট কনফিগার করা সম্ভব, যা একাধিক ইনপুট দিয়ে একই টেস্ট চালাতে সাহায্য করে। নিচে একটি উদাহরণ দেওয়া হলো:

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class ParameterizedTest {

    @Test
    @Parameters({"param1", "param2"})
    public void testMethod(String param1, String param2) {
        System.out.println("Parameter 1: " + param1);
        System.out.println("Parameter 2: " + param2);
    }
}

testng.xml ফাইলে প্যারামিটার কনফিগার করা যাবে:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <test name="Test">
        <parameter name="param1" value="Value1"/>
        <parameter name="param2" value="Value2"/>
        <classes>
            <class name="ParameterizedTest"/>
        </classes>
    </test>
</suite>

ধাপ ৫: টেস্ট ডিপেন্ডেন্সি

TestNG এর মাধ্যমে টেস্ট মেথডগুলোর মধ্যে ডিপেন্ডেন্সি সেট করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:

import org.testng.annotations.Test;

public class DependencyTest {

    @Test
    public void startServer() {
        System.out.println("Server started.");
    }

    @Test(dependsOnMethods = {"startServer"})
    public void testApplication() {
        System.out.println("Application testing.");
    }
}

উপরের উদাহরণে, testApplication() মেথডটি startServer() মেথডের উপর নির্ভর করে, অর্থাৎ startServer() সফল হলে তবেই testApplication() চালানো হবে।

ধাপ ৬: টেস্ট গ্রুপিং

TestNG-তে টেস্টগুলোকে বিভিন্ন গ্রুপে ভাগ করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:

import org.testng.annotations.Test;

public class GroupingTest {

    @Test(groups = {"sanity"})
    public void sanityTest() {
        System.out.println("Sanity test.");
    }

    @Test(groups = {"regression"})
    public void regressionTest() {
        System.out.println("Regression test.");
    }
}

ধাপ ৭: HTML রিপোর্টিং

TestNG টেস্ট চালানোর পরে স্বয়ংক্রিয়ভাবে একটি HTML রিপোর্ট তৈরি করে, যেখানে সমস্ত টেস্টের ফলাফল দেখা যায়। Eclipse বা IntelliJ IDEA তে test-output ফোল্ডারে রিপোর্টটি পাওয়া যাবে।

TestNG এর সুবিধা

  1. অনোটেশন-ভিত্তিক টেস্টিং: TestNG এর অনোটেশন ব্যবহার করে টেস্টিং আরও সহজ হয়।
  2. ডিপেন্ডেন্ট টেস্টিং: এক টেস্ট কেস অন্য টেস্ট কেসের উপর নির্ভর করতে পারে।
  3. প্যারামিটারাইজড টেস্টিং: TestNG প্যারামিটারাইজড টেস্টিং সমর্থন করে, যা একাধিক ইনপুট দিয়ে একই টেস্ট চালাতে সাহায্য করে।
  4. পারালাল টেস্টিং: TestNG একই সময়ে একাধিক টেস্ট চালাতে সক্ষম, যা বড় প্রজেক্টে বিশেষ উপযোগী।
  5. রিপোর্টিং: TestNG টেস্ট চালানোর পরে স্বয়ংক্রিয়ভাবে HTML এবং XML রিপোর্ট তৈরি করে।

TestNG এর অসুবিধা

  1. শেখার সময়: JUnit এর তুলনায় TestNG এর কিছু ফিচার শিখতে সময় লাগতে পারে।
  2. মোডিউল সমর্থন: TestNG এর কিছু পুরোনো ভার্সনে জাভার নতুন মডিউল সিস্টেমের সমর্থন কম।

TestNG বনাম JUnit

বিষয়TestNGJUnit
অনোটেশনবেশি এবং উন্নতসীমিত
প্যারামিটারাইজড টেস্টিংসমর্থিতসমর্থিত নয়
ডিপেন্ডেন্ট টেস্টিংসমর্থিতসমর্থিত নয়
রিপোর্টিংস্বয়ংক্রিয় HTML রিপোর্টসীমিত
পারালাল টেস্টিংসমর্থিতসমর্থিত নয়

TestNG শেখার জন্য রিসোর্স

  1. TestNG অফিসিয়াল ডকুমেন্টেশন: https://testng.org
  2. YouTube টিউটোরিয়াল: YouTube এ "TestNG Tutorial" নামে অনেক ভিডিও টিউটোরিয়াল পাওয়া যায়।
  3. Udemy এবং Coursera: TestNG সম্পর্কিত বিভিন্ন কোর্স উপলব্ধ রয়েছে।

কিওয়ার্ড

  • TestNG: একটি জাভা ভিত্তিক টেস্টিং ফ্রেমওয়ার্ক, যা অটোমেশন এবং ইউনিট টেস্টিংয়ের জন্য ব্যবহৃত হয়।
  • Annotation-based Testing: TestNG এর টেস্ট মেথডগুলো অনোটেশন দ্বারা চিহ্নিত করা হয়।
  • Parameterized Testing: একই টেস্ট মেথডে বিভিন্ন ইনপুট প্যারামিটার দিয়ে টেস্ট চালানোর পদ্ধতি।
  • Parallel Testing: TestNG এর মাধ্যমে একাধিক টেস্ট একই সাথে চালানো যায়।

উপসংহার

TestNG হলো একটি শক্তিশালী এবং অত্যন্ত কার্যকর জাভা ভিত্তিক টেস্টিং ফ্রেমওয়ার্ক, যা বড় প্রজেক্টের জন্য বিশেষ উপযোগী। এর প্যারামিটারাইজড টেস্টিং, ডিপেন্ডেন্ট টেস্টিং, এবং পারালাল টেস্টিং ফিচারগুলো TestNG-কে অত্যন্ত জনপ্রিয় করে তুলেছে। যারা জাভাতে কাজ করেন এবং তাদের প্রজেক্টে ইউনিট টেস্টিং এবং অটোমেশন টেস্টিং করতে চান, তাদের জন্য TestNG একটি চমৎকার সমাধান।

Promotion

Are you sure to start over?

Loading...